//Variable globale de la personne sélectionnée
var idPerson = "9999";

function setSelectedPerson(idPersonne){
	idPerson = idPersonne;
	return idPerson;
}

function infosPersonne(){
    window.openDialog('chrome://reserveit/content/reserve/infos_person.xul','_blank','chrome,centerscreen,modal');
}

function getVboxOverlay(){
    vbox = document.getElementById("form_person");
}

//fonction permettant de récupérer la liste des personnes présentes en base de données
function getListPersonnes(){
    //Requete pour la récupération des personnes
    var requeteSql = "SELECT idPerson, name FROM person ORDER BY name";
    //exécution de la requete et récupération des données
    var statement = executeReqSql(requeteSql);
    //affichage des données
    var menuPopupPersonne = document.getElementById("menuPopupPersonneComboBox");
    var menuItem;
    while(statement.step()){
        menuItem = document.createElement("menuitem");
        menuItem.setAttribute("label", statement.row.name);
        menuItem.setAttribute("value", statement.row.idPerson);
        menuPopupPersonne.appendChild(menuItem);
    }
}

function getListPersonnesAddEvent(){
    //Requete pour la récupération des personnes
    var requeteSql = "SELECT idPerson, name FROM person ORDER BY name";
    //exécution de la requete et récupération des données
    var statement = executeReqSql(requeteSql);
    //affichage des données
    var menuPopupPersonne = document.getElementById("event-grid-select-person-list-popup");
    var menuItem;
    while(statement.step()){
        menuItem = document.createElement("menuitem");
        menuItem.setAttribute("label", statement.row.name);
        menuItem.setAttribute("value", statement.row.idPerson);
        menuPopupPersonne.appendChild(menuItem);
    }
}

function getListInvitesAddEvent(){
	//Requete pour la récupération des personnes
    var requeteSql = "SELECT idPerson, name FROM person ORDER BY name";
    //exécution de la requete et récupération des données
    var statement = executeReqSql(requeteSql);
    //affichage des données
    var menuPopupPersonne = document.getElementById("event-grid-select-person-invite-box");
    var menuItem;
    while(statement.step()){
        menuItem = document.createElement("listitem");
        menuItem.setAttribute("label", statement.row.name);
        menuItem.setAttribute("value", statement.row.idPerson);
        menuPopupPersonne.appendChild(menuItem);
    }
}

function  getInfosPersonne(idPersonne){
        //Requete pour la récupération des infos d'une personne
        var requeteSql = "SELECT * FROM person WHERE idPerson="+idPersonne;
        //exécution de la requete et récupération des données
        var statement = executeReqSql(requeteSql);
        //affichage des données
        while(statement.step()){
            document.getElementById("nomPerson").value = statement.row.name;
            document.getElementById("prenomPerson").value = statement.row.firstname;
            document.getElementById("emailPerson").value = statement.row.email;
            document.getElementById("adminPerson").value = isAdmin(statement.row.admin);
        }
}

function  getInfosPersonne2(idPersonne){
        //Requete pour la récupération des infos d'une personne
        var requeteSql = "SELECT * FROM person WHERE idPerson="+idPersonne;
        //exécution de la requete et récupération des données
        var statement = executeReqSql(requeteSql);
        //affichage des données
        while(statement.step()){
            document.getElementById("nomPerson").value = statement.row.name;
            document.getElementById("prenomPerson").value = statement.row.firstname;
            document.getElementById("emailPerson").value = statement.row.email;
            document.getElementById("adminComboBox").value = statement.row.admin;
        }
}

/**
 * fonction permettant d'ouvrir le formulaire pour l'ajour d'une personne
*/
function addPersonOpenWindow(){
	window.openDialog('chrome://reserveit/content/reserve/add_person.xul','_blank','chrome,centerscreen,modal');
}

/**
 * fonction permettant d'ajouter une personne en base
*/
function addPerson(){
		
    //Récupération des champs
    var nPerson = document.getElementById("nomPerson").value; 
    var pPerson = document.getElementById("prenomPerson").value;
    var ePerson = document.getElementById("emailPerson").value;
    var aPerson = document.getElementById("adminComboBox").value;
    //test si le formulaire est valide
    if(validateFormAddPerson(nPerson, pPerson, ePerson, aPerson)){
        if (confirm("Voulez-vous ajouter cette personne ?"))
        {
            //Requete pour l'insertion de la personne
            var requeteSql = "INSERT INTO person ('name','firstname','email','admin') VALUES (:nPerson,:pPerson,:ePerson,:aPerson)";

            //Exécution de la requete et récupération des données
            var arraySql = insertReqSql(requeteSql);
            var db = arraySql[0];
            var statement = arraySql[1];
        
            statement.initialize(db.createStatement(requeteSql));
            
            statement.params.nPerson = nPerson;
            statement.params.pPerson = pPerson;
            statement.params.ePerson = ePerson;
            statement.params.aPerson = aPerson;

            statement.step();
                    
            alert("Personne ajoutée avec succès");
            window.opener.location="chrome://reserveit/content/admin/interface_admin.xul";
            window.close();        
        }
        else
        {
            alert("Personne non ajoutée");
        }
    }
}

//fonction permettant de recharger la liste des personnes
function loadListPersonnes(){
    //reset de la combobox
    document.getElementById("menuPopupPersonneComboBox").select.length=0;
    var menuPopupPersonne = document.getElementById("menuPopupPersonneComboBox");
    var menuItem;
    menuItem = document.createElement("menuitem");
    menuItem.setAttribute("label", "Sélectionnez une personne");
    menuPopupPersonne.appendChild(menuItem);
    //chargement de la liste des personnes
    getListPersonnes();
}

function editPersonOpenWindow(){
    	if (document.getElementById("personneComboBox").value!="#") {
            window.openDialog('chrome://reserveit/content/reserve/edit_person.xul','_blank','chrome,centerscreen,modal',idPerson);
        }else{
            alert("Veuillez sélectionner une personne")
        }
}

function editPerson(idPersonne){
	
	//Récupération des champs
	var nPersonne = document.getElementById("nomPerson").value; 
	var pPersonne = document.getElementById("prenomPerson").value;
	var ePersonne = document.getElementById("emailPerson").value;
	var aPersonne = document.getElementById("adminComboBox").value;
	//test si le formulaire est valide
        if(validateFormAddPerson(nPersonne, pPersonne, ePersonne, aPersonne)){
            if (confirm("Voulez-vous modifier cette personne ?")){	
            	//recuperation des lignes de réservation
    		    var requeteSql = "SELECT * FROM reservation WHERE idReservant="+idPersonne;
    		    var tmp = 0;
    		    var tmp2 = 0;
    		    //exécution de la requete et récupération des données
    		    var statement = executeReqSql(requeteSql);
    		    //récupération des données
    		    while(statement.step()){
    		    	tmp = tmp + 1;
    	        	var dateReturnTS = statement.row.dateReturn  / 1000;
    	        	var today = new Date().getTime();
    		    	if(dateReturnTS < today){
    		    		tmp2 = tmp2 + 1;
    		    	}
    		    }
    	    	//test si tous les réservants ont des réservations dépassées
    	    	if(tmp == tmp2){
    	    		//suppression des reservations
    	    		var requeteSql = "DELETE FROM reservation WHERE idReservant="+idPersonne;
    				
    				var arraySql = insertReqSql(requeteSql);
    		    	var db = arraySql[0];
    		    	var statement = arraySql[1];
    		
    				statement.initialize(db.createStatement(requeteSql));
    				statement.step();
    				
    				//update de la personne
    				var requeteSql = "UPDATE person SET 'name'=:nPersonne,'firstname'=:pPersonne,'email'=:ePersonne,'admin'=:aPersonne WHERE idPerson="+idPersonne;
                    var arraySql = insertReqSql(requeteSql);
                    var db = arraySql[0];
                    var statement = arraySql[1];
                    
                    statement.initialize(db.createStatement(requeteSql));
                    
                    statement.params.nPersonne = nPersonne;
                    statement.params.pPersonne = pPersonne;
                    statement.params.ePersonne = ePersonne;
                    statement.params.aPersonne = aPersonne;
            
                    statement.step();
                            
                    alert("Personne modifiée avec succès");
                    window.opener.location="chrome://reserveit/content/admin/interface_admin.xul";
                    window.close();
    	    	}else{
    	    		alert("Personne non modifiée car présente pour une réunion qui n'a pas encore eu lieu !!!");
    	    	}
            }
            else{
                alert("Personne non modifiée");
            }
        }
}

function deletePerson(idPersonne){
	if (document.getElementById("personneComboBox").value!="#") {
		//Requete pour la récupération des salles
		if (confirm("Voulez-vous supprimer cette personne ?"))
		{	
			//recuperation des lignes de réservation
		    var requeteSql = "SELECT * FROM reservation WHERE idReservant="+idPersonne;
		    var tmp = 0;
		    var tmp2 = 0;
		    //exécution de la requete et récupération des données
		    var statement = executeReqSql(requeteSql);
		    //récupération des données
		    while(statement.step()){
		    	tmp = tmp + 1;
	        	var dateReturnTS = statement.row.dateReturn  / 1000;
	        	var today = new Date().getTime();
		    	if(dateReturnTS < today){
		    		tmp2 = tmp2 + 1;
		    	}
		    }
	    	//test si tous les réservants ont des réservations dépassées
	    	if(tmp == tmp2){
	    		//suppression des reservations
	    		var requeteSql = "DELETE FROM reservation WHERE idReservant="+idPersonne;
				
				var arraySql = insertReqSql(requeteSql);
		    	var db = arraySql[0];
		    	var statement = arraySql[1];
		
				statement.initialize(db.createStatement(requeteSql));
				statement.step();
				
				//suppression de la personne
				var requeteSql = "DELETE FROM person WHERE idPerson="+idPersonne;
		        
		        var arraySql = insertReqSql(requeteSql);
		        var db = arraySql[0];
		        var statement = arraySql[1];
		    
		
		        statement.initialize(db.createStatement(requeteSql));
		        statement.step();
		        
		        alert("Personne supprimée avec succès");
		        
		        //reset de la combobox
		        resetComboBox(document.getElementById("menuPopupPersonneComboBox"), "Sélectonnez une personne");
		        //chargement des personnes
		        getListPersonnes();
		        //reset des champs infos
		        document.getElementById("personneComboBox").value = "#";
		        document.getElementById("nomPerson").value = "";
		        document.getElementById("prenomPerson").value = ""; 
		        document.getElementById("emailPerson").value = "";
		        document.getElementById("adminPerson").value = "";
	    	}else{
	    		alert("Personne non supprimée car présente pour une réunion qui n'a pas encore eu lieu !!!");
	    	}
	    	
		}
		else
		{
			alert("Personne non supprimée");
		}
	 }else{
         alert("Veuillez sélectionner une personne");
     }
}

function isAdmin(val){
    if(val=="true"){
        return "Oui";
    }else{
        return "Non";
    }
}

/* Fonction créant le champ email dans la page
 * de création d'événement NON UTILISE
*/
function email(){
	//Récupération des éléments
	var parentRows = document.getElementById("event-grid-rows");
	var descSep = document.getElementById("event-grid-basic-separator");
	
	//Création des éléments
	var emailRow = document.createElement("row");
	var emailLabel = document.createElement("label");
        var emailTextbox = document.createElement("textbox");

	emailRow.setAttribute("id","event-grid-email");
        
	emailLabel.setAttribute("id","event-grid-email-label");
	emailLabel.setAttribute("value","Email :");

        emailTextbox.setAttribute("id","event-grid-email-textbox");

	//Reconstruction de l'arbre
	emailRow.appendChild(emailLabel);
	emailRow.appendChild(emailTextbox);
	
	parentRows.insertBefore(emailRow,descSep);
}
 
/*
 * MPA : fonction chargeant le planning d'une personne
 */ 
 function loadPersonPlanning(idPerson){
	 var hboxListPersons = document.getElementById("hbox-list-rooms");

	 while (hboxListPersons.firstChild) {
		 hboxListPersons.removeChild(hboxListPersons.firstChild);
	 }

	 
	 var requeteSql = "SELECT * FROM reservation WHERE (idReservant= "+idPerson+" OR idPerson = "+idPerson+")";
	 var statement = executeReqSql(requeteSql);
	 var hboxPersons = document.createElement("hbox");
     
     while(statement.step()){
     	var labelReservation = document.createElement("label");		
             	
     	var dateBeginTS = statement.row.dateReservation;
     	var dateReturnTS = statement.row.dateReturn;
     	
     	//Récupération de la salle réservée
     	var roomBooked = statement.row.idRoom;
     	var requeteSql = "SELECT name FROM room WHERE idRoom="+roomBooked;
    	var statementRoom = executeReqSql(requeteSql);
    	statementRoom.step();
    	var nameRoomBooked = statementRoom.row.name;
    	//dump("nRB = "+nameRoomBooked);
     
     	dateBeginTS = dateBeginTS/1000000;
     	var dateBeginOK = showLocalDate(dateBeginTS);
     	
     	dateReturnTS = dateReturnTS/1000000;
     	var dateReturnOK = showLocalDate(dateReturnTS);
		
     	var resa = dateBeginOK + " au " + dateReturnOK + " en salle " + nameRoomBooked;
     	
     	labelReservation.setAttribute("value", resa);
     	labelReservation.setAttribute("id", statement.row.idReservation);
     	hboxPersons.appendChild(labelReservation);	
     } 
     
     hboxListPersons.appendChild(hboxPersons);
 }
 
/*
 * MPA : Fonction ouvrant le planning des personnes pour en voir leur disponiblé
 */ 
function openPlanningPersons(){
	window.openDialog('chrome://reserveit/content/reserve/planning_person.xul','_blank','chrome,centerscreen,modal');
}
 
/*
 * MPA : fonction de remplissage du planning
 */ 
function fillPlanningPersons(){
    var requeteSql = "SELECT idPerson, name FROM person ORDER BY name";
    var statement = executeReqSql(requeteSql);
    var hboxListPersons = document.getElementById("hbox-list-persons");
   
    while(statement.step()){
        var hboxPersons = document.createElement("hbox");
    	var labelPersons = document.createElement("label");
        labelPersons.setAttribute("value", statement.row.name);
        
        var idPersonSelected = statement.row.idPerson;
        var requeteSqlReservation = "SELECT distinct idEvent, dateReservation, dateReturn FROM reservation WHERE (idReservant="+idPersonSelected+" OR idPerson="+idPersonSelected+")";
        var statementReservation = executeReqSql(requeteSqlReservation);
        
        hboxPersons.appendChild(labelPersons);
                  
        while(statementReservation.step()){
        	var labelReservation = document.createElement("label");		
                	
        	var dateBeginTS = statementReservation.row.dateReservation;
        	var dateReturnTS = statementReservation.row.dateReturn;
        	dateBeginTS = dateBeginTS/1000000;
        	var dateBeginOK = showLocalDate(dateBeginTS);
        	
        	dateReturnTS = dateReturnTS/1000000;
        	var dateReturnOK = showLocalDate(dateReturnTS);
		
        	var dateBooked = dateBeginOK+" au "+dateReturnOK;
        	labelReservation.setAttribute("value", dateBooked);
        	//labelReservation.setAttribute("id", statementReservation.row.idReservation);
        	hboxPersons.appendChild(labelReservation);
        } 
        
        hboxListPersons.appendChild(hboxPersons);
    
    }
}